/*
 * @Author: Seon.Hu SeonHu@126.com
 * @Date: 2024-01-18 11:35:09
 * @LastEditors: Seon.Hu SeonHu@126.com
 * @LastEditTime: 2024-04-10 13:34:38
 * @FilePath: \bg-vben\src\components\AdChooseFromList\index.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import { computed } from 'vue';
import { useModal } from '@/components/AdVxeModal';

import { AdChooseListProps } from './src/types';

export * from './src/types';

export { default as AdChooseList } from './src/index.vue';

export { default as AdChooseListDialog } from './src/dialog.vue';

/**
 * 使用高级选择列表
 * @param props 选择列表参数
 * @returns 选择列表功能对象
 */
export function useAdChooseList(props: AdChooseListProps) {
  const [dialogRegister, dialogMethods] = useModal();

  /** 选择列表参数 */
  const getProps = computed(() => {
    return {
      ...props,
      dialogMethods: dialogMethods,
    };
  });

  /** 对话框窗体参数 */
  const getDialogProps = computed(() => {
    return {
      /** 对话框标识 */
      id: props.dialogId,
      /** 宽度 */
      width: props.dialogWidth,
      /** 高度 */
      height: props.dialogHeight,
      /** 标题 */
      title: props.dialogTitle,
      /** 表格尺寸 */
      tableSize: props.dialogTableSize,
      /** 数据 */
      data: props.data,
      /** 数据请求接口 */
      api: props.api,
      /** 额外的请求参数 */
      searchInfo: props.searchInfo,
      /** 查询条件请求之前处理 */
      searchInfoFn: props.searchInfoFn,
      /** 请求之前处理参数 */
      beforeFetch: props.beforeFetch,
      /** 请求之后处理返回参数 */
      afterFetch: props.afterFetch,
      /** 请求接口配置 */
      fetchSetting: props.fetchSetting,
      /** 表格列配置 */
      columns: props.columns,
      /** 是否多选 */
      multiple: props.dialogMultiple,
      /** 选择函数，当返回值为 false 时阻止弹出关闭。*/
      selectFn: props.selectFn,
    };
  });

  return {
    /** 对话框注册器 */
    dialogRegister,
    /** 对话框对外暴露的方法 */
    dialogMethods,
    /** 获取对话框参数 */
    getDialogProps,
    /** 获取参数 */
    getProps,
  };
}
